/*
 * Copyright (c) 2023-2024 elsfs Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.elsfs.cloud.module.datasource.biz.repository.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.elsfs.cloud.module.datasource.biz.entity.GenTemplateGroup;
import org.elsfs.cloud.module.dict.api.constant.DatasourceNameConstant;

/**
 * 模板分组关联表
 *
 * @author zeng
 */
@Mapper
@DS(DatasourceNameConstant.CODE_GEN)
public interface GenTemplateGroupMapper {

  @Select("select template_id from gen_template_group where group_id = #{groupId}")
  List<String> selectTemplateIdListGByGroupId(@Param("groupId") String groupId);

  @Delete("delete from gen_template_group where group_id = #{groupId}")
  int deleteByGroupId(@Param("groupId") String groupId);

  @Insert(
      """
       <script>
      insert into gen_template_group (group_id, template_id) values
               <foreach collection='list' item='item' index='index' separator=','>
                (#{item.groupId},#{item.templateId})
                </foreach>
       </script>
      """)
  int saveBatch(@Param("list") List<GenTemplateGroup> list);

  @Delete(
      """
      <script>
       delete from gen_template_group where group_id in
       <foreach item='item' index='index' collection='list' open='(' separator=',' close=')'>
       #{item}
       </foreach>
        </script>
      """)
  int deleteByGroupIds(List<String> ids);
}
